package rawwrs.dao.jpa;

import java.util.ArrayList;
import java.util.List;

import javax.management.Query;
import javax.persistence.EntityManager;


import rawwrs.bean.PropiedadDTO;
import rawwrs.bean.UsuarioDTO;
import rawwrs.entity.Propiedad;
import rawwrs.entity.Usuario;
import rawwrs.util.JPAUtilSingleton;
import rawwrs.util.utilitarios;

public class BusquedaJPADAO{


	@SuppressWarnings("unchecked")
	public List<PropiedadDTO> busqueda_simple(String query_auxiliar){
		
		EntityManager em = JPAUtilSingleton.
		getInstance().getEmf().createEntityManager();
		
		

		List<PropiedadDTO> propiedades = new ArrayList<PropiedadDTO>();		 
		javax.persistence.Query query =  em.createQuery( "SELECT p FROM Propiedad p where"+query_auxiliar);
		List<Propiedad> l = query.getResultList();
		
		utilitarios u = new utilitarios();
		
		System.out.println("Resultado de Busqueda :"+l.size());
		
		for ( int i=0; i < l.size(); i++ ) {			
			
			Propiedad entidadPropiedad = (Propiedad)l.get(i);
			
			Usuario entidadUsuario=entidadPropiedad.getUsuario_id();
			UsuarioDTO usuarioDTO=new UsuarioDTO(new Integer(entidadUsuario.getId()) , entidadUsuario.getIdusuario(), 
			entidadUsuario.getPerfil(), entidadUsuario.getNombres(), entidadUsuario.getApellidos(), 
			entidadUsuario.getTelefono_casa(), entidadUsuario.getTelefono_celular(), entidadUsuario.getDireccion(),
			entidadUsuario.getEmail(), entidadUsuario.getPassword(), entidadUsuario.getToken(), entidadUsuario.getEstado_usuario(),
			entidadUsuario.getEstado_admin(), entidadUsuario.getTipo_usuario());
			
			PropiedadDTO dto = new PropiedadDTO(entidadPropiedad.getId(),entidadPropiedad.getIdpropiedad(), entidadPropiedad.getTitulo(), entidadPropiedad.getDescripcion(),
								entidadPropiedad.getDepartamento(), entidadPropiedad.getProvincia(),entidadPropiedad.getDistrito(),
								entidadPropiedad.getTipo_propiedad(), entidadPropiedad.getModalidad(), entidadPropiedad.getPrecio(),
								entidadPropiedad.getDireccion(), entidadPropiedad.getArea_construida(), entidadPropiedad.getArea_terminada(),
								entidadPropiedad.getUbicacion_referencial(), entidadPropiedad.getPiscina(), entidadPropiedad.getEstacionamiento(),
								entidadPropiedad.getSauna(), entidadPropiedad.getEstudio(), entidadPropiedad.getJardin(), entidadPropiedad.getLiving(),
								entidadPropiedad.getAno_construccion(), entidadPropiedad.getNum_banos(), entidadPropiedad.getNum_habitaciones(),entidadPropiedad.getLongitud(),
								entidadPropiedad.getLatitud(), entidadPropiedad.getEstado_destacado(), entidadPropiedad.getEstado_proyecto(), entidadPropiedad.getEstado_usuario(),
								entidadPropiedad.getEstado_admin(), entidadPropiedad.getEstado_direccion(), entidadPropiedad.getIdusuario(), entidadPropiedad.getCreate_at(), entidadPropiedad.getUpdate_at(), usuarioDTO);
			dto.setNombreModalidad(u.listOperacion(Integer.parseInt(entidadPropiedad.getModalidad())));
			dto.setNombreTipo(u.listado(Integer.parseInt(entidadPropiedad.getTipo_propiedad())));
			
			UbigeoJPADAO servicio_ubigeo = new UbigeoJPADAO();
		
			if(dto.getEstado_admin()==1 && dto.getEstado_usuario()==1){
				
				dto.setNombre_departamento(servicio_ubigeo.nombre_departamento(entidadPropiedad.getDepartamento()).getNombre());
				dto.setNombre_provincia(servicio_ubigeo.nombre_provincia(entidadPropiedad.getProvincia()).getNombre());
				dto.setNombre_distrito(servicio_ubigeo.nombre_distrito(entidadPropiedad.getDistrito()).getNombre());
	
				propiedades.add( dto );
			}
		
			
			
		}

		em.close();

		return propiedades;
	}
	
	


}
